perm filename MSS.F4[XX,LCS]16 blob
sn#257033 filedate 1977-01-11 generic text, type T, neo UTF8
00100 C ********** DISPLAYS MUSIC AND DRAWS IT ON THE PLOTTER **********
00200 C *** READS DATA FROM CLEF0, BDR40,BDI40, ETC.
00300
00400 IMPLICIT INTEGER(A-Q,S-Z)
00500 REAL DIS,DISX,A,B,STFF,CENTR,POS ,UD,XDIS
00600 COMMON /DL/X22,SAVER,NAME,EXT/RRJJ/RJJ2,RJJ(20)/FONT/JFONT
00700 DIMENSION LST(13),DP(-3/4),LX(14),LY(6)
00800 COMMON/RINP/R(10,80),RPOS(2,50) /RMOD/RMODE2,RSET4,IBEAM,
00900 1 NOSET,STEM,STUP,NTC,ENDP,RAD,RDD,ITB,POSB
01000 COMMON/FRMT/F78F(1),FA1(1),FA5(1),ASK/SIZ/RSZ,JCEN,KCEN
01100 C ORDER OF COMMON MUST! REMAIN AS IS (FOR DMP MODE READ)
01200 COMMON /STF/RSTFAC(-3/4),RSTJ2 /POSI/STFF(-3/4),JJ2,POS
01300 COMMON/SCM/V(78),ISCR,LCNT,RSTF,LIST(200),REND
01400 1/ALF/INP(72),ML /UPDWN/ RL,UD
01500 COMMON /PLTR/PLT,RHT,DIS,XDIS/PTR/PWDS(250),ITEM,L,I,IX
01600 COMMON R2,JA,CENTR,J2,RJQ(20),JQ(20)
01700 COMMON/XRN/RN(2000)/DPY/ST(4000),WDS(250),MEDIT,IGO
01800 EQUIVALENCE (J3,JQ(1)),(J4,JQ(2)),(J5,JQ(3)),(R5,RJQ(3))
01900 1,(R6,RJQ(4)),(J10,JQ(8)),(J6,JQ(4)),(R4,RJQ(2)),(IT,LY(6))
02000 1,(R3,RJQ(1)),(I2,INP(2)),(I1,INP(1)),(LX(8),IL),(I3,INP(3))
02100 1,(R11,RJQ(9)),(NJR,R10,RJQ(8)),(R8,RJQ(6)),(RJ3,RJJ(1))
02200 1,(R9,RJQ(7)),(IR,LX(11)),(IU,LX(13)),(RX3,RJQ(20)),(IA,LX(1))
02300 1,(ST2,ST(2)),(IBL,LY(1)),(R13,RJQ(11)),(J13,JQ(11))
02400 1,(IE,LX(4)),(IP,LX(10)),(IM,LX(9)),(II,LX(6)),(IS,LX(12))
02500 1,(LX(2),ICC),(LX(5),IG),(LX(3),ID),(LX(14),IXX),(IPOS,POS)
02600 DATA STFF/-369.0,-246.0,-123.0,0.0,123.0,246.0,369.0,450.0/
02700 1 ,LST/'NOTE','REST','CLEF','LINE','SLUR',
02800 1 'BEAM','TRILL','STAFF','MISC','NUMB','WORD','KSIG','METER'/
02900 1,DP/8*1/,LX/'A','C','D','E','G','I','J','L','M','P','R',
03000 1 'S','U','X'/
03100 1,LY/' ','A','B','D','E','T'/, DIS/1.0/, RHT/1.0/
03200
03300 CALL SEGFIX
03400 C FOR UPPER SEGMENTS USED BY MORE THAN 1 JOB (SEGFIX.FAI[TVR])
03500 LCEN=0
03600 MCEN=0
03700 CP TOP2=-999
03800 C IF -1, THEN TRUE OUTLINES OF FONTS ARE DISPLAYED.
03900 I1=0
04000 CP DIS=1.
04100 CP RHT=1.
04200 C FOR 'FILLER' ON CRT.
04300 2 CALL DPYSET(1,ST,4000)
04400 CALL HYDPOG(2)
04500 CALL HYDPOG(1)
04600 CALL TYPLOC(-180,-511)
04700 CALL DPYBRT(5)
04800 DO 299 K=1,I
04900 CLEARS ARRAY FOR RESTART OF 'SETUP' ROUTINE
05000 299 RN(K)=0
05100 JFONT=0
05200 IX=0
05300 RSET4=999
05400 QUICK=0
05500 UD=1
05600 RL=1
05700 FSCN=IL
05800 RPOS(1,1)=0
05900 CP PLOTIT=0
06000 RSZ=.845
06100 CP TOP=-999
06200 CP BOT=999
06300 X22=0
06400 JCEN=0
06500 KCEN=0
06600 PLT=0
06700 PWDS(1)=1
06800 EDX=-1
06900 RN(2)=0
07000 C FOR RESTART. AVOIDS STAFF CODE NUM.
07100 SAVER=7
07200 DO 1402 K=-3,4
07300 1402 RSTFAC(K)=1.
07400 REDIT=999.
07500 M=1
07600 ITEM=0
07700 ZERO=-1
07800 WDS(1)=4
07900 C DATA IN DPY ARRAY STARTS AT WD.4!
08000 I=1
08100 1100 SCORE=-1
08200 58 IGO=-1
08300 IF(I1.NE.'R')GO TO 5505
08400 CALL FORMAT(NAME)
08500 IF(NAME.NE.IBL)GO TO 1221
08600 C YOU CAN TYPE 'RS NAME' FOR QUICK RESTARTS
08700 GO TO 5505
08800
08900 11 CALL NOTWRT
09000 CP57 IF(PLT)GO TO 6120
09100 57 IF(M.GT.I)GO TO 571
09200 IF(IGO)CALL DPYOUT(1)
09300 571 ITEM=ITEM+1
09400 IF(ITEM.LT.250)GO TO 17
09500 TYPE 170,ITEM
09600 I=PWDS(250)
09700 ITEM=249
09800 ST2=WDS(250)
09900 CALL DPYOUT(1)
10000 GO TO 1100
10100 170 FORMAT(2(' **** TOO MANY ITEMS ',I3,'/249'/))
10200 17 IF(IGO.GT.0)GO TO 20000
10300 K=ST2
10400 IF(X22.EQ.0)GO TO 20000
10500 CALL BOX(IBOX,RBOX)
10600 ST2=K
10700 20000 WDS(ITEM+1)=ST2
10800 IF(EDX.EQ.-1)GO TO 1571
10900 IF(M.LT.I)GO TO 6120
11000 CP1571 IF(PLOTIT.EQ.-2)GO TO 2311
11100 C SL=SAVE AFTER RESETTING LENGTH OF PAGE. (SEE I2 IN SCX)
11200 1571 PWDS(ITEM+1)=I
11300 PLT=0
11400 IF(IGO.NE.0)GO TO 55
11500 CALL DPYOUT(1)
11600 IF(SCORE.EQ.0)GO TO 9532
11700 C GO GET MORE FROM SCX.
11800 IGO=-1
11900
12000 55 IF(SCORE.EQ.0)GO TO 653
12100 CC55 IF(SCORE.EQ.0)GO TO 553
12200 5505 SVST=ST2
12300 C CATCHES TYPO WITH 'C'
12400 K=ITEM+1
12500 IF(X22.EQ.0)GO TO 5503
12600 C 'N' SUPPRESSES TYPE-OUT, 'P' OR NEW ITEM RESTORES IT.
12700 IF(QUICK)5911,210,10
12800 C -1=QUICK MODE, +1=SUPPRESS TYPE-OUT OF PARAMS
12900 210 K=X22
13000 L=RN(MEDIT+1)
13100 IF(L.EQ.13)L=11
13200 CC IF(L.EQ.10)L=9
13300 CC IF(L.GE.16.AND.L.LE.18)L=L-5
13400 IF(L.GE.11)L=L-1
13500 IF(L.GE.15)L=L-4
13600 CC IF(L.EQ.20)L=12
13700 TYPE 427,LST(L),(RN(L),L=MEDIT+1,MEDIT+3)
13800 IF(YED.LT.2)GO TO 59
13900 CP IF(YED.LT.2)GO TO 5504
14000 C YED IS SET AT 426
14100 DO 5501 L=4,YED+2
14200 5501 TYPE 4271,L,RN(MEDIT+L)
14300 GO TO 59
14400
14500 5919 FORMAT(' ;=LFT :=RT (=UP )=DN /=HALF *=*2'/)
14600 591 QUICK=-1
14700 TYPE 5919
14800 5911 CALL FSCAN
14900 C FNUM.FAI=FAST COMMANDS ;=← :=→ (=↑ )=↓ /=HALF *=*2 X=X C=C OTHERS=CR
15000 GO TO 1591
15100 GO TO 2591
15200 GO TO 3591
15300 GO TO 4591
15400 GO TO 5913
15500 GO TO 6591
15600 GO TO 7591
15700 GO TO 5912
15800 I1=0
15900 5591 QUICK=0
16000 GO TO 5917
16100 5503 CALL HYDPOG(3)
16200 C TO DELETE VERTICAL LINE (55)
16300 KED=0
16400 QUICK=0
16500 C RESET PARAM TYPE-OUT
16600 59 TYPE 56,NAME,K,I,SVST
16700 10 JAB=JA
16800 SCORE=-1
16900 ACCEPT 89,INP
17000 5917 DO 1313 L=1,14
17100 1313 IF(I1.EQ.LX(L))GO TO 2313
17200 GO TO 310
17300 C 'SA'=SAVE; 'S'=SET; 'SB'=SAVE BIG; 'ST'=STAFF;
17400 2313 IF(X22.NE.0)GO TO(884,883,883,5313,87,87,87,883,87,87,883
17500 1,15,883,883),L
17600 CP GO TO(87,13,7555,14,5313,120,884,7555,883,7555,311,883,15,883
17700 GO TO(13,7555,14,5313,120,87,7555,883,7555,87,883,15,883
17800 1,59),L
17900 C A C D E G I J L M P R S U(X
18000 C HERE A=ALTER A GROUP, DE=DELETE A GROUP
18100 C 'DP'=DISPLAY OR HIDE WHICH STAVES. D=DOWN N
18200 14 IF(I2-IE)883,13,884
18300 13 IF(I2.EQ.ID)GO TO 884
18400 C 'AD' = ADJUST STEMS TO MEET BEAMS (CODE# 19)
18500 IGO=1
18600 CALL GRED
18700 JFONT=0
18800 IF(JA.EQ.98)GO TO 5533
18900 KNT=0
19000 SCORE=0
19100 GO TO 653
19200
19300 1591 I1=IL
19400 9591 FSCN=I1
19500 GO TO 5917
19600 2591 I1=IR
19700 GO TO 9591
19800 3591 I1=IU
19900 GO TO 9591
20000 4591 I1=ID
20100 GO TO 9591
20200 7591 I1=IXX
20300 GO TO 5591
20400 5912 I1=ICC
20500 GO TO 5591
20600 5913 I1=FSCN
20700 IF(FSCN.EQ.IL)GO TO 5914
20800 IF(FSCN.EQ.IR)GO TO 5914
20900 C NEXT FOR UP-DOWN
21000 UD=UD/2
21100 GO TO 5917
21200 5914 RL=RL/2
21300 GO TO 5917
21400 6591 I1=FSCN
21500 IF(I1.EQ.IL)GO TO 5916
21600 IF(I1.EQ.IR)GO TO 5916
21700 UD=UD*2
21800 GO TO 5917
21900 5916 RL=RL*2
22000 GO TO 5917
22100
22200
22300 C 'S'=SET, SA=SAVE, SB=SAVE BIG, SM=BIG+SAME NAME, ST=STAFF, SP=SPC STF.
22400 C SC=SPACING SCALE ABOVE STAFF n (99=DELETE IT)
22500 15 DO 3313 L=1,6
22600 3313 IF(I2.EQ.LY(L))GO TO(312,3121,3121,3121,312,884),L
22700 C BL A B D E T
22800 IF(I2.EQ.ICC)GO TO 884
22900 IF(I2.EQ.IP)GO TO 87
23000 IF(I2.EQ.'H')JFONT=1
23100 IF(I3.EQ.IXX)JFONT=0
23200 IF(I3.EQ.IP)JFONT=-1
23300 IF(I3.EQ.'O')JFONT=-2
23400 IF(I3.EQ.II)JFONT=-3
23500 C 'SH'(=SHOW) IS SAME AS 44 1. SHOWS TYPE FONTS ON DPY.
23600 C 'SHP' = SHOW ONLY AS 'PRIMATIVE' FONT, 'SHX' = CANCEL FONTS ON DPY.
23700 C 'SHO' = FONT SET (TEMPORARILY) TO 'BDR'; 'SHI' = 'BDI' (ITALICS)
23800 IF(I2.NE.IM)GO TO 5505
23900 C ONLY FOR ST, SA, SB, SM, RS, S
24000 3121 IF(X22.NE.0)GO TO 5505
24100 SAVER=7
24200 CALL SAVIT
24300 GO TO 5505
24400 312 JA=55
24500 R2=RN(MEDIT+3)
24600 C POSITION OF ITEM LOOKED AT.
24700 R3=55.
24800 GO TO 6531
24900 C ABOVE FOR 'S'ET ALIGNMENT
25000 C 'S'=SET ALIGNMENT, 'A'=ALIGN IT. 'M'=MOVER 'C'= COPIER
25100 C 'E'=EDIT; 'I'=ITEM; 'G'=GET; 'GM'=GET MORE;
25200 5313 IF(I2.NE.IXX)GO TO 6313
25300 JA=EXT
25400 C TYPE 'EXT NNN' TO PUT .NNN AS EXTENSION ON OUTPUT FILES.(.DMD=DEFAULT)
25500 REREAD 1885,K,EXT
25600 IF(EXT.NE.IBL)GO TO 5505
25700 EXT=JA
25800 C TYPE 'EXT' ONLY TO SEE WHAT IS CURRENT EXT.
25900 TYPE 1885,IBL,EXT
26000 GO TO 5505
26100 1885 FORMAT(A4,A3)
26200 6313 K=-1
26300 DO 882 JA=3,10
26400 882 IF(INP(JA).NE.IBL)GO TO 884
26500 GO TO 883
26600 885 FORMAT(A2,21F)
26700 884 REREAD 885,K,R2,RJQ
26800 JA=55
26900 CC IF(I1.EQ.II)JA=22
27000 IF(I2.NE.ICC)GO TO 101
27100 CALL SCL
27200 GO TO 5505
27300 101 IF(I2.NE.ID)GO TO 988
27400 IF(I1.EQ.IA)JA=19
27500 C 'AD'just stems to beams.
27600 988 IF(I2.EQ.IT)JA=44
27700 IF(I2.EQ.'N')GO TO 188
27800 IF(I2.NE.IP)GO TO 6531
27900 IF(R2.GT.5)GO TO 1886
28000 C GO BACK AND RESET ALL
28100 K=R2
28200 JA=0
28300 C USE '5' FOR STAFF 0.
28400 888 IF(K.EQ.5)K=0
28500 DP(K)=-DP(K)
28600 JA=JA+1
28700 K=RJQ(JA)
28800 IF(K.EQ.0)GO TO 55
28900 C JUMP OUT IF RJQ(JA)=0 OR 99
29000 IF(K.EQ.99)GO TO 85
29100 C*** 3/74 END WITH '99' TO MAKE DP RIGHT NOW!
29200 GO TO 888
29300 C TO GET BACK ALL LINES TYPE 6+
29400 311 JA=0
29500 IGO=1
29600 ML=0
29700 IF(I2.NE.IL)GO TO 884
29800 1886 DO 2886 K=-3,4
29900 2886 DP(K)=1
30000 GO TO 85
30100 CP IF(I1.NE.IP)GO TO 8851
30200 C PL RESETS 'DP'
30300 C TO GET BACK OTHERS - 'DPY N' AGAIN WILL DO.
30400 CP2311 CALL PLTCMD
30500 CP IF(PLOTIT.EQ.0)GO TO 3005
30600 CP I1=IP
30700 CP PLOTIT=-1
30800 CP GO TO 6531
30900 C 'PL' GOES TO 'PLOT COMMAND' ROUTINE
31000
31100 881 IF(I1.GT.0)GO TO 87
31200 C JUMP IF I1 IS NOT A LETTER (K>0=NUM, K<0=LET.)
31300
31400 C NEXT FOR READ, RS, DEL, L,R,U,D
31500 883 IF(I1.EQ.IR)GO TO 8835
31600 IF(IX.EQ.I)GO TO 8834
31700 C CAN'T DELETE ('DE') AFTER A PARAM HAS BEEN CHANGED. START OVER.
31800 IF(I2.NE.IE)GO TO 8831
31900 GO TO 5505
32000 8835 IF(I2.EQ.IS)GO TO 2
32100 C TYPE 'RS' TO RESTART.
32200 IF(I2.NE.IE)GO TO 8831
32300 C 'READ' IS SAME AS 144
32400 JA=144
32500 GO TO 88
32600 8834 IF(I1.EQ.ICC)GO TO 72
32700 8831 IF(JA.NE.16)GO TO 8832
32800 IF(X22.EQ.0)GO TO 5505
32900 C CAN'T MOVE LETTERS OR 'SCORE' ENTRIES UNLESS REALLY IN EDIT MODE!
33000 8832 CALL EDIT(JJA)
33100 IF(JA.NE.99)GO TO 6531
33200 CALL DELETE
33300 C DELETE ROUTINE COULD BE PUT DIRECTLY IN HERE.
33400 GO TO 425
33500 89 FORMAT(72A1)
33600 C TYPE L, R, U OR D OR EDIT TO MOVE LAST ENTERED ITEM.
33700
33800 CC101 CALL SCL
33900 CC GO TO 5505
34000 CC221 JFONT=R2
34100 C JA=44 IS FOR JFONT (DISPLAY FONT OUTLINES)-WIPED OUT BY '24' ETC.
34200 CC OUT 3/1/76 GO TO 5505
34300
34400 310 IF(I1.EQ.'N')GO TO 410
34500 IF(X22.EQ.0)GO TO 87
34600 IF(I1.EQ.'Q')GO TO 591
34700 GO TO 87
34800 410 IF(QUICK.NE.0)GO TO 510
34900 C ↑↑↑ SO 'N n' WILL WORK EVEN AFTER N HAS BEEN SET.
35000 QUICK=1
35100 C TYPE 'N' =NO-TYPE PARAMS TO SUPPRESS TYPE-OUT WHILE EDITING.
35200 IF(X22.NE.0)GO TO 87
35300 510 I1=II
35400 C 'N n' WHEN NOT IN EDIT MODE = 'I n'<CR>,'N'<CR>
35500 87 REREAD 1,JA,R2,RJQ
35600 IF(I1.NE.II)GO TO 610
35700 IF(I2.EQ.'N')GO TO 884
35800 C 'IN n,n,n,' MUST BE READ AGAIN AT 884 TO GET n'S CORRECTLY.
35900 JA=22
36000 GO TO 6531
36100 610 IF(K)JA=55
36200 C ED 47 -1 = 55 47 -1, ETC.
36300 IF(JA.EQ.101)GO TO 101
36400 CC IF(JA.EQ.44)GO TO 221
36500 CC IF(JA.EQ.14)GO TO 88
36600 C IS THERE A BUG CONCERNING SAVIT AND 'SCORE'????
36700 CC IF(JA.EQ.144)GO TO 88
36800 CC IF(JA.EQ.444)GO TO 440
36900 IF(I1.NE.'N')GO TO 710
37000 IF(R2.NE.0)GO TO 510
37100 C IF NO NUM FOLLOWS 'N' GO PRINT OUT CURRENT PARAMS.
37200 GO TO 10
37300 710 IF(I1.EQ.'Z')GO TO 24
37400 C 'Z' = ZOOM (OLD CODE# 24)
37500 IF(I2.NE.IP)GO TO 441
37600 RSET4=R3
37700 C SPn SETS "SETUP" STAFF NUMBER
37800 GO TO 5505
37900 C 'SP' IS SAME AS 444
38000 441 IF(I1.EQ.IP)GO TO 33
38100 C 'P n' = PRINT CURRENT CONTENTS OF PARAM n. (ONLY WHILE IN EDIT MODE.)
38200 IF(I1.NE.IT)GO TO 110
38300 IF(X22.EQ.0)GO TO 288
38400 QUICK=0
38500 C TYPE 'T' TO RESET PARAM TYPE-OUT
38600 IF(R2.EQ.0)GO TO 5505
38700 GO TO 510
38800 110 IF(JA.GT.0)SAVER=SAVER-1
38900 IF(X22.NE.0)GO TO 6531
39000 IF(SAVER)CALL SAVIT
39100 C SAVES EVERY 7TH TIME AROUND
39200 IF(JA.EQ.0)GO TO 5505
39300 C CATCHES ZEROS AND LOWER CASE LETTERS.
39400 GO TO 6531
39500 C NEXT FOR ALPHA TEXT ITEMS. 'T'=TYPE
39600 288 JA=16
39700 M=I
39800 CALL WORDS
39900 SAVER=SAVER-1
40000 GO TO 8852
40100 CC8833 IF(JA.EQ.14)GO TO 88
40200 CC IF(JA.EQ.144)GO TO 88
40300 CC8833 IF(JA.NE.16)GO TO 6531
40400
40500 CC188 R3=0
40600 CC88 SET4=R3
40700 C *** THIS FEATURE CHNGD. 6/75***SET4 IS NEG. FOR AUTOMATIC STAFF 4 SETUP.
40800 188 IF(X22.NE.0)GO TO 5505
40900 JA=14
41000 RMODE2=R3
41100 C TYPE 'IN STF# MODE' ETC. -- SAME AS 14 STF#.
41200 88 SCORE=0
41300 IF(JA.NE.14)GO TO 889
41400 C NEXT PUTS UP STAFF IF IT WASN'T THERE ALREADY
41500 SAVER=-1
41600 RSTF=R2
41700 IF(R3)R3=0
41800 DO 1889 K=1,ITEM
41900 J=PWDS(K)
42000 IF(RN(J+1).NE.8)GO TO 1889
42100 IF(RN(J+2).EQ.R2)GO TO 890
42200 1889 CONTINUE
42300 C DIDN'T FIND THIS STAFF
42400 M=2000
42500 IGO=0
42600 JA=8
42700 R3=0
42800 GO TO 6531
42900 890 JA=14
43000 ITCHK=ITEM
43100 ICHK=I
43200 IDPY=ST2
43300 C ALL THIS FOR BACKUPS
43400 889 SPD=ST2
43500 JIT=ITEM
43600 ISC=I
43700 REND=0
43800 C RETAINS ORIGINS OF SCORE SQUENCE
43900 9532 IF(REND.EQ.2)GO TO 889
44000 C FOR READIN CONTINUATION.
44100 M=ISC
44200 9533 IF(JA.EQ.8)GO TO 890
44300 IF(REND)GO TO 9535
44400 C REND=0 GO, -1=NORMAL END, 1=ABORTED.
44500 CALL SCMSS
44600 IF(REND.EQ.1)GO TO 9535
44700 IF(REND.NE.99)GO TO 9534
44800 I=ICHK
44900 ITEM=ITCHK
45000 ST2=IDPY
45100 CALL ACCPOG(1)
45200 CALL DPYOUT(1)
45300 GO TO 9535
45400 9534 ITEM=JIT
45500 J=M
45600 9536 ITEM=ITEM+1
45700 PWDS(ITEM)=J
45800 J=J+RN(J)+3
45900 IF(J.LT.I)GO TO 9536
46000 IF(IBEAM)GO TO 9537
46100 R13=0
46200 R2=RSTF
46300 JA=19
46400 J3=0
46500 CALL HOMER
46600 9537 ITEM=JIT
46700 ST2=SPD
46800 GO TO 8852
46900 9535 SCORE=-1
47000 IGO=-1
47100 JA=16
47200 C FOR TRAP AT 'EDIT'
47300 GO TO 5505
47400
47500 CC553 IF(SCORE)GO TO 6531
47600 653 KNT=KNT+1
47700 C NUM OF ITEMS IN LIST
47800 R11=0
47900 R10=0
48000 R9=0
48100 JA=R(1,KNT)
48200 R2=R(2,KNT)
48300 IF(JA.NE.0)GO TO 550
48400 C =0 MEANS NO MORE ITEMS.
48500 CALL DPYOUT(1)
48600 GO TO 1100
48700
48800 5533 X22=0
48900 IGO=-1
49000 CALL DPYNEW
49100 GO TO 55
49200
49300 550 DO 7531 K=1,6
49400 7531 RJQ(K)=R(K+2,KNT)
49500 CCX RJQ(9)=R(2,KNT)
49600 CCX P11 INFO (MARKS) WAS STORED IN P2 (STAFF # IS IN RSTF)
49700 6531 M=1
49800 EDX=-1
49900 IF(JA.EQ.222)GO TO 72
50000 IF(JA.EQ.2222)GO TO 73
50100 DO 5532 K=1,20
50200 5532 JQ(K)=RJQ(K)
50300 CC J2=R2 DOES THIS AT 60
50400 CP7542 IF(I1.EQ.IP)GO TO 590
50500 C X22= ITEM# WHEN EDITING OR DELETING.
50600 IF(X22.NE.0)GO TO 5511
50700 IF(JA.GT.0)GO TO 155
50800 IF(R2.EQ.0)GO TO 5505
50900 C FOR UP, DOWN, LEFT, RIGHT
51000 RJJ2=J2
51100 GO TO 6221
51200 C GOES BACK IF NEGATIVE AND NOT IN EDIT MODE.
51300 CC155 IF(JA.EQ.24)GO TO 24
51400 155 IF(JA.EQ.22)GO TO 42
51500 IF(JA.EQ.44)GO TO 44
51600 C THIS '44' IS SET IN 'EDIT' - IT'S NEVER TYPED.
51700 IF(JA.EQ.55)GO TO 554
51800 CC IF(JA.EQ.333)GO TO 6333
51900 IF(JA.NE.19)GO TO 60
52000 271 CALL HOMER
52100 GO TO 8853
00100 33 IF(X22.EQ.0)GO TO 6333
00200 C WHEN NOT IN EDIT MODE(X22=0) "P n n2" LISTS ALL PARAMS FOR ITEMS n→n2.
00300 J2=R2
00400 TYPE 331,J2,RJJ(J2-2)
00500 C TYPE P n TO SEE FULL CONTENTS OF PARAM. n.
00600 GO TO 5505
00700 331 FORMAT(I,F15.5)
00800
00900 24 IF(X22.NE.0)GO TO 5505
01000 JA=24
01100 C CAN'T DO ZOOM WHILE IN EDIT MODE
01200 IGO=0
01300 CC CALL HYDPOG(2)
01400 C TO ERASE SPACING SCALE.
01500 CC IF(X22.EQ.0)GO TO 23
01600 CC R2=RHORZ(RN(MEDIT+3))
01700 CC M=RN(MEDIT+2)
01800 CC R4=RN(MEDIT+4)*RSTFAC(M)+STFF(M)
01900 CC ITEM=ITEM-1
02000 C PICKS UP POINT FROM CURSOR IN 'BOX'
02100 CC CALL CLRCUR
02200 CC X22=0
02300 CC GO TO 241
02400 23 IF(R2.LT.100)GO TO 2410
02500 R5=AMOD(R2,100.)
02600 R2=(R2-R5)/100.
02700 R3=1000.*R5-500.
02800 R4=R2*50.
02900 C TYPE 24 200.5 FOR 1ST HALF OF DOUBLE, 301 FOR LAST THIRD OF TRIPLE
03000 2410 IF(R2.NE.0)GO TO 241
03100 IGO=-1
03200 243 R2=1.
03300 C TO REDISPLAY WITH MAGNIFICATION - OR JUST RUN THROUGH DATA.
03400 241 RSZ=.845*R2
03500 JCEN=R3*RSZ
03600 KCEN=R4*RSZ
03700 C NEXT TO RECONSTITUTE SPACING SCALE.
03800 IF(R2.EQ.1)GO TO 3312
03900 R2=(R4-100.)/100.
04000 IF(R2.LT.-3)R2=-3
04100 C WE DON'T WORRY IF IT'S TOO HIGH (YET).
04200 3312 R4=0
04300 CALL SCL
04400 R2=0
04500 R3=0
04600 R4=0
04700 LCEN=0
04800 MCEN=0
04900 CC RJSZ=1.
05000 C IF P5 ≠ 0 GOES THROUGH DATA IN OLD WAY.
05100 JFONT=0
05200 85 M=1
05300 I=PWDS(ITEM+1)
05400 ITEM=0
05500 8552 ST2=3
05600 8852 PLT=1
05700 EDX=0
05800 CALL ACCPOG(1)
05900 IF(JA.EQ.0)GO TO 6120
06000 IF(JA.NE.24)IGO=0
06100 GO TO 6120
06200
06300 6333 CALL LISTP(LST)
06400 GO TO 5505
06500
06600 172 CALL JUGGLE
06700 CALL CLRCUR
06800 CALL DPYNEW
06900 IF(JA.EQ.22)GO TO 424
07000 C FOR MOVING DIRECTLY TO NEW ITEM IN EDIT MODE.
07100 IF(ZERO)GO TO 55
07200 X22=ZERO
07300 ZERO=-1
07400 IF(JA.EQ.55)GO TO 554
07500 IF(JA.EQ.44)GO TO 44
07600 IF(KED.NE.0)GO TO 244
07700 GO TO 425
07800
07900 C 55,POS -- SETS UP ALIGNMENT
08000 554 CALL BOX(-1,R2)
08100 IF(J4.EQ.0)KED=-1
08200 RITEM=R4
08300 C FOR 'ED POS., STF., CODE#'
08400 IF(J3.GT.4)KED=-2
08500 RLINE=R2
08600 R2=R3
08700 GO TO 45
08800
08900 C '22,0' EDITS LAST ITEM ENTERED
09000 42 REDIT=999.0
09100 IF(R2.NE.0)GO TO 242
09200 X22=ITEM
09300 GO TO 429
09400 44 KED=1
09500 RITEM=R3
09600 C 'ST', STF#, CODE# (IF 0, ALL ITEMS COME UP) - STF>4 = ALL STAVES.
09700 IF(R2.GT.4)KED=2
09800 45 REDIT=R2
09900 C THE STAFF #
10000 JED=1
10100 244 X=ITEM
10200 IF(JED.GT.X)GO TO 444
10300 DO 144 K=JED,X
10400 L=PWDS(K)
10500 IF(KED.EQ.-2)GO TO 654
10600 C -2 LOOKS AT ALL ITEMS NEAR VERT. LINE, -1 ON SINGLE STAFF.
10700 IF(KED.EQ.2)GO TO 656
10800 IF(RN(L+2).NE.REDIT)GO TO 144
10900 IF(KED)GO TO 654
11000 IF(RITEM.EQ.0)GO TO 655
11100 656 IF(RITEM.NE.RN(L+1))GO TO 144
11200 655 IF(JA.NE.55)GO TO 344
11300 654 IF(ABS(RLINE-RN(L+3)).LT.5.0)GO TO 344
11400 144 CONTINUE
11500 444 REDIT=999.
11600 C NO MORE ON LINE
11700 R2=0
11800 C SO IT WILL RETURN IF NOTHING IS FOUND WITH 'ED' OR 'ST'.
11900 GO TO 73
12000 344 JED=K+1
12100 C FOR NEXT TIME AROUND
12200 X22=K
12300 GO TO 429
12400 C CR MOVES ALONG GIVEN LINE, 222 LEAVES THIS MODE
12500
12600 91 CALL ACCPOG(1)
12700 IF(I.EQ.IX)ITEM=ITEM-1
12800 GO TO 142
12900 242 IF(X22.GT.0)GO TO 5511
13000 142 IF(R2.NE.0)GO TO 424
13100 IF(REDIT.EQ.999)GO TO 1554
13200 IF(JA.GE.0)GO TO 244
13300 1554 X22=X22+1
13400 IF(JA)X22=X22-1+JA
13500 IF(X22.LT.1)X22=1
13600 GO TO 425
13700 427 FORMAT(1XA5/,2F6.0,F10.2,$)
13800 4271 FORMAT('+ (',I2,')',F7.2,$)
13900
14000 C FOR EDITING
14100 5511 IF(JA.EQ.55)GO TO 420
14200 220 IF(JA.NE.22)GO TO 720
14300 C 'I, #' WILL MOVE TO ANOTHER ITEM WHEN ALREADY IN EDIT MODE.
14400 KED=0
14500 JED=0
14600 GO TO 72
14700 720 IF(JA.EQ.44)GO TO 420
14800 CC 3/76 IF(JA.EQ.33)GO TO 33
14900 CC IF(JA.EQ.24)GO TO 24
15000 C FOR '24' WHILE IN EDIT MODE. MAGS WITH CURSOR AS CENTER.
15100 IF(JA.GT.100)GO TO 4221
15200 IF(JA.GT.13)GO TO 5505
15300 C PARAM NUM TOO HIGH? LOOKS FOR NEXT ITEM TO EDIT IF <CR>
15400 4221 IF(X22.EQ.0)GO TO 5517
15500 IF(R2.NE.0)GO TO 5517
15600 C BACKS UP WHEN IN EDIT MODE.
15700
15800 IF(JA.GT.0)GO TO 5518
15900 IF(I.EQ.IX)GO TO 91
16000 ZERO=X22+1
16100 C '0' AFTER AN EDIT ENDS THE EDIT AND GETS NEXT ITEM FOR EDIT.
16200 72 IF(X22.EQ.0)GO TO 55
16300 IF(KED.EQ.0)REDIT=999.
16400 320 IF(I.NE.IX)GO TO 172
16500 ITEM=ITEM-1
16600 C TO DELETE AN ITEM
16700 73 X22=0
16800 CALL CLRCUR
16900 CALL DPYNEW
17000 IF(REDIT.EQ.999.)GO TO 428
17100 IF(JA.EQ.55)GO TO 554
17200 IF(JA.EQ.44)GO TO 44
17300 428 IF(R2.EQ.0.OR.R2.GT.ITEM)GO TO 55
17400 C DELETION IN EDIT MODE DOES NOT LEAVE MODE.
17500 424 X22=R2
17600 425 IF(X22.GT.ITEM)GO TO 73
17700 C LEAVES EDIT MODE.
17800 429 IX=I
17900 MEDIT=PWDS(X22)
18000 J=2
18100 426 Y=RN(MEDIT)+J
18200 CALL LOOP(0,Y,1,I,MEDIT,RN)
18300 JJA=RN(I+1)
18400 YED=Y-2
18500 L=I+2
18600 DO 422 K=1,11
18700 IF(K.GT.YED)GO TO 423
18800 RJJ(K)=RN(L+K)
18900 GO TO 422
19000 423 RJJ(K)=0
19100 422 CONTINUE
19200 RJJ2=RN(L)
19300 IF(IGO.GT.0)GO TO 4231
19400 C NO BOX WHEN IN GROUP EDIT ROUTINE
19500 IBOX=I
19600 RBOX=RJJ2
19700 CALL BOX(IBOX,RBOX)
19800 4231 ITEM=ITEM+1
19900 ST2=WDS(ITEM)
20000 GO TO 55
20100
20200 5517 IF(JA.EQ.0)GO TO 6221
20300 5518 X=100-JA
20400 IF(X)JA=JA/100
20500 IF(JA.LE.2)GO TO 7221
20600 IF(JA.LE.13)GO TO 324
20700 JA=JA/10
20800 C ADD 1000 TO PARAM TO MAKE EQUAL TO ANOTHER PARAM
20900 X=R2-2.
21000 RJJ(JA-2)=RJJ(X)
21100 GO TO 6222
21200 324 I1=JA-2
21300 IF(X)GO TO 224
21400 RJJ(I1)=R2
21500 GO TO 6222
21600 224 RJJ(I1)=RJJ(I1)+R2
21700 GO TO 6222
21800
21900 7555 CALL MOVER
22000 IF(R2.EQ.99)GO TO 59
22100 C 99=BACKUP OUT OF MOVER ETC.
22200 IGO=0
22300 JFONT=0
22400 C SO IT WON'T DO ALL FONT LOOKUPS.
22500 8853 IF(JJ2)GO TO 5505
22600 M=PWDS(JJ2)
22700 I=PWDS(ITEM+1)
22800 ITEM=JJ2-1
22900 ST2=WDS(JJ2)
23000 C SO IT DOESN'T HAVE TO GO THROUGH ALL ITEMS
23100 GO TO 8852
23200
23300 420 REDIT=0
23400 211 IF(R2.NE.0)GO TO 320
23500 IF(KED.GE.0)RLINE=RJ3
23600 RJ3=RLINE
23700 GO TO 6222
23800 C FOR '55' ALIGNING
23900 7221 IF(X)GO TO 4223
24000 CCC IF(JA.EQ.2)RJJ2=R2
24100 CCC IF(JA.EQ.1)JJA=R2
24200 CALL PARCH(JA,JJA,R2)
24300 GO TO 6222
24400 4223 RJJ2=R2+RJJ2
24500 C ARRAYS NEED 2O LOCATIONS HERE.
24600 C CHNG PARAMS WITH PAIRS OF NUMS.(EG. 2,122 4,13 5,-2 ETC.)
24700 6222 DO 1222 K=1,20,2
24800 L=JQ(K)
24900 IF(L.EQ.0)GO TO 6221
25000 C '600 2' WILL ADD 2 TO PARAM 6. '3000 6' SETS P3=P6.
25100 RD=RJQ(K+1)
25200 X=L
25300 IF(L.LT.100)GO TO 223
25400 IF(L.LT.2000)GO TO 5223
25500 X=L/1000
25600 L=JQ(K+1)-2
25700 RD=RJJ(L)
25800 GO TO 2223
25900 5223 X=L/100
26000 IF(X.EQ.2)GO TO 1223
26100 RD=RJJ(X-2)+RD
26200 GO TO 2223
26300 1223 RD=RJJ2+RD
26400 223 IF(X.LE.2)GO TO 3223
26500 2223 RJJ(X-2)=RD
26600 GO TO 1222
26700 CCC3223 IF(X.EQ.2)RJJ2=RD
26800 CCC IF(X.EQ.1)JJA=RD ***** PARCH CHANGES PARAMS 1 AND 2.
26900 3223 CALL PARCH(X,JJA,RD)
27000 C NOW P1 CAN BE CHANGED IN EDIT MODE -- BE CAREFUL,,,,!!!!!!
27100 1222 CONTINUE
27200 C*** LOOP SET TO 11 (20 IN ARRAY!) ONLY 13 PARAMS POSSIBLE NOW.
27300 6221 DO 5514 K=1,11
27400 RJQ(K)=RJJ(K)
27500 5514 JQ(K)=RJQ(K)
27600 R2=RJJ2
27700 JA=JJA
27800 ITEM=ITEM-1
27900 IF(ITEM)ITEM=0
28000 ST2=WDS(ITEM+1)
28100 I=PWDS(ITEM+1)
28200 CALL DPYNEW
00100 60 J2=R2
00200 RSTJ2=RSTFAC(J2)
00300 CL RD=0
00400 IF(JA.NE.2)GO TO 163
00500 CJ IF(R9.EQ.0)GO TO 163
00600 IF(R8.EQ.0)GO TO 163
00700 IF(R8.EQ.-1)GO TO 163
00800 C R8=0=AS IS; -1=WHOLE REST; >0=NUMBER OVER REST; -2=CENTERED
00900 K=ITEM
01000 C ITEM+1 IS CURRENT ITEM IN QUICK RUN-THROUGHS.
01100 IF(X22.NE.0)K=X22-1
01200 RD=1.75*RSTJ2
01300 L=PWDS(K+2)
01400 IF(RN(L+1).NE.4)GO TO 164
01500 C GO ON IF NEXT ISN'T BAR LINE (CODE 4. NEXT FINDS OTHER LINES!!)
01600 IF(RN(L+2).NE.R2)GO TO 164
01700 RB=RN(L+3)
01800 L=PWDS(K)
01900 C CHECK PREV. AND NEXT ITEM. IF NOT BAR, DON'T TRY TO CENTER!
02000 IF(RN(L+1).NE.4)GO TO 164
02100 IF(RN(L+2).NE.R2)GO TO 164
02200 C JUMP IF NOT ON SAME STAFF
02300 RA=RN(L+3)
02400 R3=RA+(RB-RA)/2-1.75*RSTJ2
02500 164 IF(PLT.EQ.0)GO TO 160
02600 RN(PWDS(K+1)+3)=R3
02700 C ******* A DANGEROUS PLACE. KEEP TRACK OF THIS
02800 GO TO 5541
02900
03000 163 IF(JA.EQ.16)GO TO 63
03100 IF(PLT.NE.0)GO TO 5541
03200 IF(JA.NE.8)GO TO 70
03300 IF(R9.NE.1)GO TO 160
03400 L=7
03500 C RJQ(7) IS R9
03600 71 RA=RN(MEDIT+L+2)
03700 TYPE 427,RA
03800 721 FORMAT(' TYPE INST. NAME '$)
03900 TYPE 721
04000 ACCEPT FA5,RD
04100 RJQ(L)=RD
04200 IF(RD.NE.' ')GO TO 160
04300 IF(RN(MEDIT).LT.L)RA=0
04400 C RESTORES NAME IF THERE WAS ONE ALREADY. ELSE=0
04500 RJQ(L)=RA
04600 C WHEN P9=1 ASKS FOR ID NAME FOR THE STAFF (FOR PART EXTRACTOR)
04700 GO TO 160
04800 371 FORMAT(A5,A1,A3)
04900 70 IF(JA.NE.11)GO TO 160
05000 C ↑↑↑↑ WAS - TO 63
05100 IF(J10.NE.1)GO TO 160
05200 L=8
05300 C P10←1 GETS NAME OF BASIC DRAW FILE, PUTS IT IN P10 (NJR)
05400 GO TO 71
05500 CC LASTNM=NJR
05600 CC62 IF(NJR.EQ.0)NJR=LASTNM
05700 C IF NO NAME ASKED FOR, IT TAKES LAST NAME GIVEN.(SOLVES SORT PROB?)
05800 63 RD=R5
05900 IF(RD.GE.100)RD=RD-100
06000 C ADD 100 TO SZ TO MAKE TEXT APPEAR IN ALL SEPARATE PARTS OF ORCH. SCORE.
06100 IF(J10.EQ.0)GO TO 162
06200 L=ITEM
06300 IF(X22.NE.0)L=X22-1
06400 IF(J10.EQ.1)GO TO 263
06500 C ↓↓↓↓ TEMP. FIX TO CNVT TEXT FORMAT TO NEW STYLE. "10 99"
06600 IF(J10.NE.99)GO TO 863
06700 X=PWDS(X22)+6
06800 DO 563 L=X,X+2
06900 RB=RN(L)
07000 K=RB
07100 C CHECKS TO SEE WHICH FORMAT
07200 563 IF(K.NE.RB)GO TO 663
07300 GO TO 57
07400 663 DO 763 L=X,X+2
07500 763 RN(L)=RN(L)*100.
07600 GO TO 57
07700
07800 C NEXT FOR CENTERING TEXT. P10>1
07900 863 RB=0
08000 X=PWDS(L+1)
08100 363 L=L+1
08200 K=PWDS(L)
08300 RB=RB+RN(K+9)
08400 C ADD SPACE NEEDED
08500 K=PWDS(L+1)
08600 IF(RN(K+1).NE.16)GO TO 463
08700 IF(RN(K).EQ.8)GO TO 363
08800 C GO BACK IF MORE LETTERS TO COME
08900 463 R3=R10-(RB-3.4)*RD*RSTJ2/2.
09000 C +3.4 IS TO COMPENSATE FOR STARTING POS. BEING IN CENTER OF LET.
09100 R10=0
09200 IF(RN(X).EQ.8)RN(X+10)=0
09300 RN(X+3)=R3
09400 C THESE ARE NEEDED FOR ITEMS CENTERED DIRECTLY FROM 'WORDS'
09500 GO TO 162
09600 263 K=PWDS(L)
09700 R3=RN(K+5)*RSTJ2*RN(K+9)+RN(K+3)
09800 R4=RN(K+4)
09900 R5=RN(K+5)
10000 R2=RN(K+2)
10100 J2=R2
10200 L=PWDS(L+1)
10300 DO 361 JJA=3,5
10400 361 RN(L+JJA)=RJQ(JJA-2)
10500 RN(L+2)=R2
10600 CCC RN(PWDS(L+1)+3)=R3
10700 C PUTS POS. BACK INTO RN ARRAY EVERY TIME.
10800 C PUTS 13TH(+) LETTER IN RIGHT POS.
10900 162 IF(PLT.NE.0)GO TO 5541
11000 CX160 IF(EDX.NE.0)GO TO 162
11100 CP IF(I1.EQ.IP)GO TO 5541
11200 CX162 RJ3=R3
11300 160 RJ3=R3
11400 JJA=JA
11500 IF(R8.NE.0)GO TO 161
11600 IF(JA.EQ.1)R8=999.
11700 C 999=0 FOR STEM EXTENSIONS.
11800 CL161 CNT=1
11900 CL DO 5543 K=1,9
12000 C 10/6/73 ABOVE WAS ,11
12100 CL RA=RJQ(K)
12200 CL IF(RA.NE.0)CNT=K
12300 CL5543 RJJ(K)=RA
12400 C USES ONLY 10 PARAMETERS BEYOND JA, J2
12500 161 CALL MSSLUP
12600 CP2554 IF(PLT.NE.0)GO TO 5541
12700 IF(JA.NE.6)GO TO 1261
12800 IF(J13.EQ.0)GO TO 171
12900 R2=X22
13000 X22=0
13100 R3=R13
13200 J3=J13
13300 R4=R11
13400 C RESET HOMING RANGE (DEFAULT=3) WITH P11.
13500 CALL CLRCUR
13600 R13=0
13700 C TYPE 13, n WITH BEAMS TO ADJUST IN RE. TO OTHER STAFF(LIKE OLD 'AD')
13800 JA=19
13900 GO TO 271
14000 171 CALL HOMER
14100 CC IF(JA.NE.13)GO TO 1261
14200 CC IF(J6.NE.0)R13=-1
14300
14400 1261 IF(R13.EQ.0)GO TO 261
14500 RD=R11
14600 CALL HOMER
14700 R11=RD
14800 C R11 GETS CHANGED IN 'HOMER'
14900 IF(JA.EQ.10)R3=R3+RSTJ2
15000 IF(JA.NE.9)GO TO 261
15100 IF(J5.GT.3)GO TO 261
15200 CALL NOZERO(R6)
15300 R3=R3+RSTJ2+2.*RSTJ2*R6
15400 C ABOVE HELPS CENTER NUMBERS UNDER NOTES(BECAUSE R3 IS AT CENTR OF NUM)
15500 C IF P13≠0 ANY ITEM WILL LINE UP WITH ANY OTHER ITEM. P13 IS RESET=0
15600 C P13=-1 POSITIONS ITEM ABOVE OR BELOW NOTE, =-2 JUST BEYOND STEM.
15700 C CODE 10 (NUMBERS) SPACED TO LEFT AS WELL AS CODE 9, P5=1,2,3 (FLAT,SHRP,NAT)
15800 C **** FOR '0' EDITS ******
15900 CL261 RN(I)=CNT
16000 CL RN(I+1)=JA
16100 CL I=I+2
16200 CL RN(I)=R2
16300 CL IF(RD.NE.0)RN(I)=RD
16400 C TO SAVE NOTE NUMBS IN P2.
16500 CL DO 4554 K=1,CNT
16600 CL4554 RN(I+K)=RJQ(K)
16700 CL3554 I=CNT+1+I
16800 261 CALL LUP2
16900 5541 IF(DP(J2))GO TO 57
17000 C*** 3/74 NEW DP SYSTEM
17100 C WHAT ABOUT EDITS?*******
17200 POS=STFF(J2)
17300 RX3=R3
17400 C SAVES IT IN RJQ(20) FOR OTHER ROUTINES.
17500 J3=ROFF(RHORZ(R3))
17600 C LINE IS DIVIDED INTO 200 POINTS.
17700 CALL CENTX
17800 C SETS VERT.(CENTR) POSITION BASED ON STAFF AND R4
17900 R3=J3
18000 IF(JA.LE.2)GO TO 11
18100 551 GO TO(1,1,68,25,67, 625,116,125,11,69, 68,12),JA
18200 GO TO (116,81,80),JA-15
18300 C FOR 16,17,18 (WORDS, KSIG, METER)
18400 IF(JA.EQ.99)GO TO 57
18500 C FOR PART EXTRACTOR TRANSPOSER - KEY SIG=0
18600 IF(JA.NE.33.AND.JA.NE.44)GO TO 222
18700 JA=JA/11
18800 C THIS IS TEMPORARY - TO READ PAGE TEMP. FILES.
18900 GO TO 551
19000
19100 222 I=PWDS(ITEM+1)
19200 GO TO 5505
19300 C 44 1; JFONT=ONE DISPLAYS FONTS - THIS ALSO CATCHES SOME TYPOS
19400
19500 69 CALL MAKNUM(R5)
19600 GO TO 57
19700
19800 68 CALL CLEFS
19900 GO TO 57
20000
20100 67 CALL SLUR
20200 GO TO 57
20300
20400 116 CALL ALPHA
20500 GO TO 57
20600
20700 81 CALL KSIG
20800 GO TO 57
20900
21000 80 CALL METER
21100 GO TO 57
21200
21300 125 IF(R2.EQ.0)RMOV=R8
21400 CALL STAFF
21500 GO TO 57
21600 625 CALL BMSTF
21700 GO TO 57
21800 C BEAMS, STAFF LINES ****
21900 12 CALL CIRCLE
22000 GO TO 57
22100
22200 25 CALL ITMSUB
22300 C BAR LINES, ETC.
22400 GO TO 57
22500
22600 C TO GET DISPLAY: 'G'; 'GM' ADDS TO DPY;
22700 120 IF(I.EQ.1)GO TO 1220
22800 IF(I2.NE.IM)GO TO 222
22900 C 'GM'=GET MORE
23000 1220 CALL FORMAT(NAME)
23100 C NOW TYPE 'G NAME' OR 'GM NAME'
23200 IF(NAME.NE.IBL)GO TO 1221
23300 1225 TYPE 21
23400 ACCEPT 371,NAME,J,J
23500 IF(NAME.EQ.'99')GO TO 5505
23600 IF(NAME.EQ.IBL)GO TO 2220
23700 IF(J.NE.IBL)EXT=J
23800 1221 IF(LOOKX(NAME,EXT).EQ.0)GO TO 1225
23900 C FUNC. LOOKD IS 'FAIL' PROG. TO CHECK ON LOOKUPS
24000 2220 JA=-1
24100 C -1 IS FOR 8852+3
24200 2200 J=ITEM+1
24300 IF(NAME.NE.IBL)GO TO 2207
24400 CALL GETEXT('TMP','DMD')
24500 GO TO 2202
24600 2207 CALL GETEXT(NAME,EXT)
24700 2202 CALL EXTIN(RSTFAC,128)
24800 CALL EXTIN(PWDS(J),JJ2)
24900 CALL EXTIN(RN(I),IPOS)
25000 IF(LCNT.GT.1)CALL EXTIN(LIST,LCNT)
25100 C (K) BUG IN FORTRAN UNFORMATTED READ-WRITE. SOMETIMES LAST ITEMS WRONG.
25200 ITEM=ITEM+JJ2-2
25300 IF(I2.EQ.IM)GO TO 2203
25400 I=IPOS
25500 IF(RSTF.EQ.0)GO TO 85
25600 C (END OF V ARRAY)RSTF=-1 MEANS READ THE DPY BUFFER
25700 CALL EXTIN(ST,4250)
25800 CALL DPYNEW
25900 GO TO 5505
26000
26100 2203 M=I-1
26200 DO 2204 K=J,J+JJ2-2
26300 2204 PWDS(K)=PWDS(K)+M
26400 GO TO 85
26500 M=IX
26600 C IF P5=0 MOVES UP AT START, IF P6=0 MOVES UP AT END.
26700 C (J8) P8=1 OR 2 FOR 2-PASS PLOTS
26800 C 1.24 AND 1.2 ARE TO FIT 8 1/2 X 11 FORMAT
26900 C RMOV HAS INCHES FROM P8 OF STAFF 0.
27000 C R6=1 FOR NO MOVE AT END. R7=INCHES TO MOVE FOR NEW STAFF 0.
27100 C RE. R7:DISTANCE IS MEASURED FROM BOTTOM LINE OF STANDARD POSITION
27200 C OF STAFF 0 UP TO LOWEST!! POINT FOUND IN FOLLOWING FILE. THEN
27300 C NEXT SHIFT IS AGAIN FROM STANDARD STF.0 TO NEXT FILE'S LOW POINT.
27400 C MOVES PLOTTER UP IF P5=0.
27500
27600 C NEXT RUNS THROUGH DATA WITH NEW CHANGES.
27700 6120 IF(M.GE.I)GO TO 7120
27800 IF(IGO.EQ.0)GO TO 7121
27900 C USE "Z" TO DO FIXUP WHEN LIST IS SCRAMBLED !?X@!ZQ
28000 IF(M.EQ.PWDS(ITEM+1))GO TO 7121
28100 K=ITEM+1
28200 TYPE 7122,K
28300 PWDS(K)=M
28400 7121 CALL RUNTHR(M)
28500 IF(EDX.LE.0)GO TO 60
28600 GO TO 5505
28700 7122 FORMAT(' FIXING ITEM ',I3)
28800
28900 7120 M=1
29000 IF(PLT.EQ.1)EDX=-1
29100 PLT=0
29200 GO TO 5505
29300 C ALWAYS START PLOT WITH BOTTOM UNIT ON PAGE AND WORK UP.
29400
29500 56 FORMAT(/1XA5,' TYPE FOR ITEM #',I3,I,I6/)
29600 1 FORMAT(I,24F)
29700 21 FORMAT(' NAME.EXT? '$)
29800 END